/*
 * This file is part of NativeAccessHooks.
 *
 * Copyleft 2014 Mark Jeronimus. All Rights Reversed.
 * https://code.google.com/p/nativeaccesshooks/
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with NativeAccessHooks. If not, see <http://www.gnu.org/licenses/>.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package com.digitalmodular.nah.keyboard;

/**
 * Enum containing universal virtual key codes.
 *
 * Virtual key codes correspond to logical actions bound to a key, whether it's typing the symbol printed on it, performing an
 * action, or signaling a key modifier. Virtual keys can change physical location depending on the chosen language. For example, a
 * standard USA ANSI keyboard has a Closing square bracket key sitting next to the top of the Enter key which will generate the
 * proper VK code. On a Japanese keyboard, this key key has moved down one place to where the backslash key was. This moved key will
 * generate the same VK code for the closing bracket, but still the scan code as the original backslash key.
 *
 * There are 254 VK codes. {@link #VK_UNKNOWN} is not a VK code but a special code signaling that the action is unknown.
 * {@link #VK_NONE} is not a VK code but a special code signaling that the key does nothing in software. Such keys might still do
 * something in hardware, like changing the screen brightness. Note that these two special values are assigned by Windows and,
 * unlike windows drivers, this library has no control over them.
 *
 * VK codes that are specific to a certain keyboard have not been named because they can serve different purposes on different
 * keyboards. To prevent ambiguity with the function keys (F1, etc.), the affected hexadecimal codes starting with F are prefixed
 * with <code>"0x"</code>.
 *
 * This list is not guaranteed to be complete, and it's not guaranteed that existing constants will remain available in future
 * versions if I find new codes or codes that turn out to be not universal.
 *
 * @author Mark Jeronimus
 * @since 1.0
 */
// date 2014-09-11
public enum VirtualKey {
	VK_UNKNOWN,						// 00
	VK_LBUTTON,						// 01
	VK_RBUTTON,						// 02
	VK_BREAK,						// 03
	VK_MBUTTON,						// 04
	VK_XBUTTON1,					// 05
	VK_XBUTTON2,					// 06
	VK_07,							// 07
	VK_BACK_SPACE,					// 08
	VK_TAB,							// 09
	VK_0A,							// 0A
	VK_0B,							// 0B
	VK_CLEAR,						// 0C
	VK_ENTER,						// 0D
	VK_0E,							// 0E
	VK_0F,							// 0F
	VK_SHIFT,						// 10
	VK_CONTROL,						// 11
	VK_ALT,							// 12
	VK_PAUSE,						// 13
	VK_CAPS_LOCK,					// 14
	VK_KANA,						// 15
	VK_16,							// 16
	VK_JUNJA,						// 17
	VK_FINAL,						// 18
	VK_IME_KANJI,					// 19
	VK_1A,							// 1A
	VK_ESCAPE,						// 1B
	VK_CONVERT,						// 1C
	VK_NONCONVERT,					// 1D
	VK_ACCEPT,						// 1E
	VK_MODECHANGE,					// 1F
	VK_SPACE,						// 20
	VK_PAGE_UP,						// 21
	VK_PAGE_DOWN,					// 22
	VK_END,							// 23
	VK_HOME,						// 24
	VK_LEFT,						// 25
	VK_UP,							// 26
	VK_RIGHT,						// 27
	VK_DOWN,						// 28
	VK_SELECT,						// 29
	VK_PRINT,						// 2A
	VK_EXECUTE,						// 2B
	VK_PRINT_SCREEN,				// 2C
	VK_INSERT,						// 2D
	VK_DELETE,						// 2E
	VK_HELP,						// 2F
	VK_0,							// 30
	VK_1,							// 31
	VK_2,							// 32
	VK_3,							// 33
	VK_4,							// 34
	VK_5,							// 35
	VK_6,							// 36
	VK_7,							// 37
	VK_8,							// 38
	VK_9,							// 39
	VK_3A,							// 3A
	VK_3B,							// 3B
	VK_3C,							// 3C
	VK_3D,							// 3D
	VK_3E,							// 3E
	VK_3F,							// 3F
	VK_40,							// 40
	VK_A,							// 41
	VK_B,							// 42
	VK_C,							// 43
	VK_D,							// 44
	VK_E,							// 45
	VK_F,							// 46
	VK_G,							// 47
	VK_H,							// 48
	VK_I,							// 49
	VK_J,							// 4A
	VK_K,							// 4B
	VK_L,							// 4C
	VK_M,							// 4D
	VK_N,							// 4E
	VK_O,							// 4F
	VK_P,							// 50
	VK_Q,							// 51
	VK_R,							// 52
	VK_S,							// 53
	VK_T,							// 54
	VK_U,							// 55
	VK_V,							// 56
	VK_W,							// 57
	VK_X,							// 58
	VK_Y,							// 59
	VK_Z,							// 5A
	VK_LWINDOWS,					// 5B
	VK_RWINDOWS,					// 5C
	VK_CONTEXT_MENU,				// 5D
	VK_5E,							// 5E
	VK_SLEEP,						// 5F
	VK_NUMPAD_0,					// 60
	VK_NUMPAD_1,					// 61
	VK_NUMPAD_2,					// 62
	VK_NUMPAD_3,					// 63
	VK_NUMPAD_4,					// 64
	VK_NUMPAD_5,					// 65
	VK_NUMPAD_6,					// 66
	VK_NUMPAD_7,					// 67
	VK_NUMPAD_8,					// 68
	VK_NUMPAD_9,					// 69
	VK_NUMPAD_MULTIPLY,				// 6A
	VK_NUMPAD_ADD,					// 6B
	VK_SEPARATOR,					// 6C
	VK_NUMPAD_SUBTRACT,				// 6D
	VK_NUMPAD_PERIOD,				// 6E
	VK_NUMPAD_DIVIDE,				// 6F
	VK_F1,							// 70
	VK_F2,							// 71
	VK_F3,							// 72
	VK_F4,							// 73
	VK_F5,							// 74
	VK_F6,							// 75
	VK_F7,							// 76
	VK_F8,							// 77
	VK_F9,							// 78
	VK_F10,							// 79
	VK_F11,							// 7A
	VK_F12,							// 7B
	VK_F13,							// 7C
	VK_F14,							// 7D
	VK_F15,							// 7E
	VK_F16,							// 7F
	VK_F17,							// 80
	VK_F18,							// 81
	VK_F19,							// 82
	VK_F20,							// 83
	VK_F21,							// 84
	VK_F22,							// 85
	VK_F23,							// 86
	VK_F24,							// 87
	VK_88,							// 88
	VK_89,							// 89
	VK_8A,							// 8A
	VK_8B,							// 8B
	VK_8C,							// 8C
	VK_8D,							// 8D
	VK_8E,							// 8E
	VK_8F,							// 8F
	VK_NUM_LOCK,					// 90
	VK_SCROLL_LOCK,					// 91
	VK_92,							// 92
	VK_93,							// 93
	VK_94,							// 94
	VK_95,							// 95
	VK_96,							// 96
	VK_97,							// 97
	VK_98,							// 98
	VK_99,							// 99
	VK_9A,							// 9A
	VK_9B,							// 9B
	VK_9C,							// 9C
	VK_META,						// 9D
	VK_9E,							// 9E
	VK_9F,							// 9F
	VK_LSHIFT,						// A0
	VK_RSHIFT,						// A1
	VK_LCONTROL,					// A2
	VK_RCONTROL,					// A3
	VK_LALT,						// A4
	VK_RALT,						// A5
	VK_BROWSER_BACK,				// A6
	VK_BROWSER_FORWARD,				// A7
	VK_BROWSER_REFRESH,				// A8
	VK_BROWSER_STOP,				// A9
	VK_BROWSER_SEARCH,				// AA
	VK_BROWSER_FAVORITES,			// AB
	VK_BROWSER_HOME,				// AC
	VK_VOLUME_MUTE,					// AD
	VK_VOLUME_DOWN,					// AE
	VK_VOLUME_UP,					// AF
	VK_MEDIA_NEXT_TRACK,			// B0
	VK_MEDIA_PREV_TRACK,			// B1
	VK_MEDIA_STOP,					// B2
	VK_MEDIA_PLAY_PAUSE,			// B3
	VK_LAUNCH_MAIL,					// B4
	VK_LAUNCH_MEDIA_SELECT,			// B5
	VK_LAUNCH_APP1,					// B6
	VK_LAUNCH_APP2,					// B7
	VK_B8,							// B8
	VK_B9,							// B9
	VK_SEMICOLON,					// BA
	VK_EQUALS,						// BB
	VK_COMMA,						// BC
	VK_MINUS,						// BD
	VK_PERIOD,						// BE
	VK_SLASH,						// BF
	VK_BACK_QUOTE,					// C0
	VK_IME_BACKSLASH,				// C1
	VK_C2,							// C2
	VK_C3,							// C3
	VK_C4,							// C4
	VK_C5,							// C5
	VK_C6,							// C6
	VK_C7,							// C7
	VK_C8,							// C8
	VK_C9,							// C9
	VK_CA,							// CA
	VK_CB,							// CB
	VK_CC,							// CC
	VK_CD,							// CD
	VK_CE,							// CE
	VK_CF,							// CF
	VK_D0,							// D0
	VK_D1,							// D1
	VK_D2,							// D2
	VK_D3,							// D3
	VK_D4,							// D4
	VK_D5,							// D5
	VK_D6,							// D6
	VK_D7,							// D7
	VK_D8,							// D8
	VK_D9,							// D9
	VK_DA,							// DA
	VK_BRACELEFT,					// DB
	VK_BACKSLASH,					// DC
	VK_BRACERIGHT,					// DD
	VK_QUOTE,						// DE
	VK_OEM_8,						// DF
	VK_E0,							// E0
	VK_E1,							// E1
	VK_LBACKSLASH,					// E2
	VK_E3,							// E3
	VK_E4,							// E4
	VK_PROCESSKEY,					// E5
	VK_E6,							// E6
	VK_E7,							// E7
	VK_E8,							// E8
	VK_E9,							// E9
	VK_EA,							// EA
	VK_IME_NO_CONVERT,				// EB
	VK_EC,							// EC
	VK_ED,							// ED
	VK_EE,							// EE
	VK_EF,							// EF
	VK_IME_ALPHANUMERIC,			// F0
	VK_IME_KATAKANA,				// F1
	VK_IME_HIRAGANA,				// F2
	VK_IME_FULL_WIDTH,				// F3
	VK_IME_HALF_WIDTH,				// F4
	VK_IME_ROMAN,					// F5
	VK_IME_NOROMAN,					// F6
	VK_DBE_ENTERWORDREGISTERMODE,	// F7
	VK_0xF8,						// F8
	VK_DBE_FLUSHSTRING,				// F9
	VK_PLAY,						// FA
	VK_ZOOM,						// FB
	VK_NONAME,						// FC
	VK_PA1,							// FD
	VK_OEM_CLEAR,					// FE
	VK_NONE,						// FF
}
